iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
AI 自動化

從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報系列 第 12 篇

Day 12 |實作自動化資安通報:整合 n8n 與 LINE Bot 建立威脅預警機制

  • 分享至 

  • xImage
  •  

大家好!昨天我們成功在 n8n 建立了 Webhook 節點,看到 FastAPI 傳遞過來的 JSON 資料完美呈現在畫面上。

在原本的技術路線中,許多國外教學會選擇串接 Discord 或 Slack。但在台灣的職場與日常生活中,LINE 才是真正的「國民軟體」。如果半夜伺服器遭到嚴重攻擊,比起 Discord,LINE 的震動絕對更能第一時間把維運人員叫醒。


步驟一:取得 LINE Bot 的通關憑證

要讓 n8n 有權限發送 LINE 訊息,我們需要先去 LINE 的開發者後台申請一隻機器人,並取得兩把關鍵的 API 鑰匙:

登入 LINE Developers 控制台 (https://developers.line.biz/console/)。

建立一個新的 Provider(提供者,例如命名為「安全營運」),並在底下選擇建立一個 Messaging API Channel。

進入 Channel 設定頁面後,我們需要取得兩把關鍵鑰匙:

  • 第一把鑰匙 (發送對象): 前往 Basic settings 頁籤,一直滑到最下面找到 Your user ID。這代表你本人的帳號,因為目前是測試階段,我們要指定機器人把告警精準發給自己。
  • 第二把鑰匙 (發送權限): 前往 Messaging API 頁籤,滑到最下面點擊發行(Issue),產生一組 Channel access token (long-lived)。

💡 實務小知識與踩坑警告:

迷路警告:LINE 的系統很容易讓人搞混「官方帳號管理後台 (manager.line.biz)」跟「開發者後台 (developers.line.biz)」。如果你找不到發行 Token 的按鈕,請務必確認網址是在 Developers 開發者後台!

資安觀念:以前在處理會計帳務時,公司的印章跟密碼絕對不能外流;現在寫程式也一樣,請把 Access Token 當作銀行密碼保管,絕對不要寫在會推送到 GitHub 的公開程式碼裡!

記得加好友:在 Messaging API 頁面中間會有一個 QR Code,請務必拿起手機掃描加這隻機器人為好友,否則等一下會收不到推播。


步驟二:在 n8n 建立 HTTP Request 節點

相較於 Discord 有現成的懶人節點,串接 LINE Bot 比較考驗我們對 RESTful API 的熟悉度。我們將使用 n8n 最萬用的 HTTP Request 節點來呼叫 LINE 的官方 API。

回到瀏覽器的 n8n 畫面(http://localhost:5678)。

在昨天建好的 Webhook 節點右側,點擊 "+" 並搜尋加入 HTTP Request 節點。
image

點開設定面板,進行以下核心配置:

Method:選擇 POST。

URL:填入 LINE 的推播 API 端點 https://api.line.me/v2/bot/message/push。

Authentication:選擇 None(我們會手動在 Header 帶入 Token)。


步驟三:設定 Headers 與動態 JSON Payload

接下來要透過 API 告訴 LINE 我們是誰,以及要傳送什麼訊息。這一步是整個 API 串接的靈魂,也是最容易發生 Authorization failed 錯誤的地方。

在 HTTP Request 面板往下滑,找到 Send Headers 並開啟它。新增兩個不可或缺的 Header 參數:

  • 第一組 (身分驗證):Name 填 Authorization,Value 填 Bearer 你的Channel_Access_Token。(⚠️ 極度重要:Bearer 後面一定要有一個半形空格!而且請確認你貼上的是超過 150 字元的長亂碼,千萬不要貼到短短的 Channel secret!)

  • 第二組 (資料格式):Name 填 Content-Type,Value 填 application/json。這告訴 LINE 我們接下來傳送的內容是 JSON 格式。

接著,開啟 Send Body 開關,Body Content Type 選擇 JSON。
在 Specify Body 選擇 JSON (或 Raw),並貼上以下的結構:

{
  "to": "這裡請貼上你的_Your_user_ID",
  "messages": [
    {
      "type": "text",
      "text": "🚨 【資安系統告警】偵測到重大安全漏洞 🚨\n\n受害主機:{{ $json.body.agent_name }}\n漏洞編號:{{ $json.body.cve_id }}\n受害套件:{{ $json.body.package }}\n嚴重程度:{{ $json.body.severity }}\n\n詳細描述:\n{{ $json.body.description }}"
    }
  ]
}

Messaging API 獲取 Channel access token:

image

image
注意到了嗎?我們利用 n8n 的變數表達式 {{ }},把上一關 FastAPI 傳過來的動態資料,完美地鑲嵌進了 LINE 的文字訊息中。每次有不同的漏洞,這段文字就會自動替換成對應的情報。

測試畫面:

image


步驟四:系統端對端 (End-to-End) 整合測試

設定完畢後,點擊 n8n 畫面右下角的 Execute Workflow(執行工作流),讓系統進入監聽狀態。

接著,我們等待 Wazuh 再次偵測到漏洞,或者手動觸發一筆告警。當資料流一啟動:

  1. 威脅感知 (Detection):Wazuh 精準捕捉到系統漏洞,並主動擊發 Webhook 告警。
  2. 情報收斂 (Parsing):FastAPI 接收龐雜的 JSON Payload,透過 Pydantic 萃取出關鍵的 CVE 威脅情報。
  3. 自動化拋轉 (Routing):n8n 接收乾淨數據,無縫觸發 HTTP Request 節點呼叫 LINE Messaging API。
  4. 即時預警 (Notification):維運人員的手機隨即收到格式化的資安告警卡片,實現零時差通報!

看著手機跳出通知的那一刻,真的會非常有成就感!這代表我們的「主動式資安威脅通報系統」已經正式打通,而且完美融入了台灣開發者的日常生態。

團隊終於可以脫離手動看 Log 的痛苦,進入自動化維運的時代。明天,我們將準備進入下一個階段:既然系統都知道哪裡有漏洞了,我們能不能讓它透過 n8n 進行「自動化阻擋與修補」呢?我們明天見!


上一篇
Day 11 | 視覺化工作流起步:在 n8n 建立 Webhook 與 FastAPI 串接
下一篇
Day13|初探 SOAR 自動化回應:使用 n8n SSH 執行安全維運任務
系列文
從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言